package com.play2gether;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
 * Created by Raul on 21/03/14.
 */
public class DataBaseManager {

    public static final String CREATE_TABLE_PAIS                = "create table pais              ( id integer primary key, " +
                                                                                                    "nombre text )";

    public static final String CREATE_TABLE_VIVES_CON           = "create table vives_con         ( id integer primary key, " +
                                                                                                    "nombre text )";

    public static final String CREATE_TABLE_CIUDAD              = "create table ciudad            ( id integer primary key, " +
                                                                                                    "nombre text )";

    public static final String CREATE_TABLE_USUARIO             = "create table usuario           ( id_usuario integer primary key autoincrement, " +
                                                                                                    "id_pareja integer, " +
                                                                                                    "email text, " +
                                                                                                    "password text, " +
                                                                                                    "nombre text, " +
                                                                                                    "fecha_nacimiento text, " +
                                                                                                    "sexo text, " +
                                                                                                    "id_ciudad integer, " +
                                                                                                    "id_pais integer, " +
                                                                                                    "id_vives integer, " +
                                                                                                    "estado integer, " +
                                                                                                    "apodo text, " +
                                                                                                    "foreign key(id_ciudad) references ciudad(id_ciudad), " +
                                                                                                    "foreign key(id_pais) references pais(id_pais), " +
                                                                                                    "foreign key(id_vives) references vives_con(id_vives) )";

    public static final String CREATE_TABLE_TIPO_ENVIO         = "create table tipo_envio         ( id_tipo integer primary key autoincrement, " +
                                                                                                    "nombre_tipo text )";

    public static final String CREATE_TABLE_ENVIOS             = "create table envios             ( id_envios integer primary key autoincrement, " +
                                                                                                    "id_usuario integer, " +
                                                                                                    "tipo_envio integer, " +
                                                                                                    "id_objeto integer, " +
                                                                                                    "nombre_objeto text, " +
                                                                                                    "fecha_creacion text, " +
                                                                                                    "fecha_envio numeric, " +
                                                                                                    "foreign key(id_usuario) references usuario(id_usuario), " +
                                                                                                    "foreign key(tipo_envio) references tipo_envio(id_tipo) )";

    public static final String CREATE_TABLE_OPCIONES           = "create table opciones           ( id_opcion integer primary key autoincrement, " +
                                                                                                    "id_usuario integer, " +
                                                                                                    "mostrar_notificacion text, " +
                                                                                                    "num_sugerencia integer, " +
                                                                                                    "foreign key(id_usuario) references usuario(id_usuario) )";

    public static final String CREATE_TABLE_SUGERENCIAS        = "create table sugerencias        ( id_sugerencia integer primary key autoincrement, " +
                                                                                                    "id_usuario integer, " +
                                                                                                    "fecha_recibido numeric, " +
                                                                                                    "estado_sugerencia integer, " +
                                                                                                    "tipo integer, " +
                                                                                                    "titulo text, " +
                                                                                                    "imagen text, " +
                                                                                                    "texto text, " +
                                                                                                    "id_postura integer, " +
                                                                                                    "id_sug_server integer, "+
                                                                                                    "foreign key(id_usuario) references usuario(id_usuario) )";

    public static final String CREATE_TABLE_FORMULARIOS        = "create table formularios        ( id_formulario integer primary key, " +
                                                                                                    "id_usuario integer, " +
                                                                                                    "titulo text, " +
                                                                                                    "imagen text, " +
                                                                                                    "estado integer, " +
                                                                                                    "id_form_server integer, " +
                                                                                                    "fecha_recibido numeric, " +
                                                                                                    "id_postura integer, " +
                                                                                                    "foreign key(id_usuario) references usuario(id_usuario) )";

    public static final String CREATE_TABLE_PREGUNTAS          = "create table preguntas          ( id_pregunta integer primary key, " +
                                                                                                    "id_formulario integer, " +
                                                                                                    "numero_pregunta integer, " +
                                                                                                    "texto text, " +
                                                                                                    "tipo integer, " +
                                                                                                    "respuestas text, " +
                                                                                                    "foreign key(id_formulario) references formularios(id_formulario) )";

    public static final String CREATE_TABLE_PREGUNTA_RESPUESTA = "create table pregunta_respuesta ( id_preg_resp integer primary key autoincrement, " +
                                                                                                    "id_usuario integer, " +
                                                                                                    "id_formulario integer, " +
                                                                                                    "respuestas text, " +
                                                                                                    "foreign key(id_usuario) references usuario(id_usuario), " +
                                                                                                    "foreign key(id_formulario) references formularios(id_formulario) )";

    public static final String CREATE_TABLE_KAMASUTRA          = "create table kamasutra          ( id_kamasutra integer primary key, " +
                                                                                                    "nombre_postura text, " +
                                                                                                    "imagen text, " +
                                                                                                    "informacion text, " +
                                                                                                    "info_el text, " +
                                                                                                    "info_ella text )";

    public static final String CREATE_TABLE_KAMASUTRA_USUARIO  = "create table kamasutra_usuario  ( id integer primary key autoincrement, " +
                                                                                                    "id_kamasutra integer, " +
                                                                                                    "id_usuario text, " +
                                                                                                    "te_gusta integer, " +
                                                                                                    "probado integer, " +
                                                                                                    "foreign key(id_usuario) references usuario(id_usuario), " +
                                                                                                    "foreign key(id_kamasutra) references kamasutra(id_kamasutra) )";

    public static final String CREATE_TABLE_USUARIO_PAREJA     = "create table usuario_pareja     ( id integer primary key autoincrement, " +
                                                                                                    "id_usuario integer, " +
                                                                                                    "emailPareja text, " +
                                                                                                    "foreign key(id_usuario) references usuario(id_usuario) )";
    private DbHelper helper;
    private SQLiteDatabase db;

    public DataBaseManager(Context context){
        helper = new DbHelper(context);
        db     = helper.getWritableDatabase();
    }

    public DataBaseManager() {

    }

    public boolean HacerLogin(String email, String password){
        boolean exist = false;
        try {
            Cursor c = db.rawQuery("select id_usuario from usuario where email='" + email + "' and password='" + password + "'", null);
            if (c.moveToFirst()) { exist = true; }
        }
        catch (Exception e){
            Log.e("ERROR", e.getMessage());
        }
        return exist;
    }
    public boolean existeUsuarioEnMovil(String id){
        boolean exist = false;
        try {
            Cursor c = db.rawQuery("select id_usuario from usuario where id_usuario='" + id, null);
            if (c.moveToFirst()) { exist = true; }
        }
        catch (Exception e){
            Log.e("ERROR", e.getMessage());
        }
        return exist;
    }
    /*public ContentValues generarContentValuesInsertar(int id, String email, String password){
        ContentValues valores = new ContentValues();
        valores.put("id_login", id);
        valores.put("email", email);
        valores.put("password",password);

        return valores;
    }*/
    public ContentValues generarContentValuesRegistro(int id, int pareja, String email, String password, String nombre, String fecha, String sexo, int ciudad, int pais, int vives, int estado, String apodo){
        ContentValues valores = new ContentValues();
        valores.put("id_usuario", id);
        valores.put("id_pareja",pareja);
        valores.put("email", email);
        valores.put("password",password);
        valores.put("nombre",nombre);
        valores.put("fecha_nacimiento",fecha);
        valores.put("sexo",sexo);
        valores.put("id_ciudad",ciudad);
        valores.put("id_pais",pais);
        valores.put("id_vives",vives);
        valores.put("estado",estado);
        valores.put("apodo",apodo);

        return valores;
    }
    public ContentValues generarContentValuesKamasutra(int id, String nombre, String imagen, String inf,String inf_el, String inf_ella){
        ContentValues valores = new ContentValues();
        valores.put("id_kamasutra", id);
        valores.put("nombre_postura",nombre);
        valores.put("imagen", imagen);
        valores.put("informacion", inf);
        valores.put("info_el",inf_el);
        valores.put("info_ella",inf_ella);

        return valores;
    }
    /*
    private ContentValues generarContentValuesPais_Ciudad_vives(int id, String nombre){
        ContentValues valores = new ContentValues();
        valores.put("id",id);
        valores.put("nombre",nombre);
        return valores;
    }
    */

    /*public void insertar(int id, String nombre, String password){

        try                { db.insert("login","nombre",generarContentValuesInsertar(id,nombre,password));

            //db.execSQL("insert into usuario values (1,null,null,'"+password+"',"+nombre+",null,null,null,null,null,null,null)");

        }
        catch (Exception e){ e.printStackTrace(); }
    }*/
    public void registrar(int id, String email, String password){
        try                { db.insert("usuario",null,generarContentValuesRegistro(id,0,email,password,null,null,null,0,0,0,0,null));
                           }
        catch (Exception e){ e.printStackTrace(); }
    }
    public Cursor ObtenerPerfil(String id) {
        //String[] datos = new String[7];

        return db.rawQuery("select u.nombre, " +
                                   "u.fecha_nacimiento, " +
                                   "u.sexo, " +
                                   "o.num_sugerencia, " +
                                   "u.apodo " +
                            "from  usuario u, " +
                                   "opciones o " +
                            "where u.id_usuario=o.id_usuario " +
                                   "and u.id_usuario=" + "'"+id+"';"
                    ,null
                   );

    }
    public int obtenerNumPeticiones(String id){
        Cursor cursor;

        cursor = db.rawQuery("select num_sugerencia " +
                             "from   opciones " +
                             "where id_usuario=" +"'"+id+"';"
                , null
        );
        int num = 0;
        if (cursor.moveToFirst()) {
            cursor.moveToFirst();
            int n = cursor.getColumnIndex("num_sugerencia");
            num = cursor.getInt(n);
        }
        return num;
    }
    public Cursor ObtenerPerfil0(String id) {
        //String[] datos = new String[7];

        return db.rawQuery("select u.nombre, " +
                        "u.fecha_nacimiento, " +
                        "u.sexo, " +
                        "c.nombre ciudad, " +
                        "p.nombre pais, " +
                        "v.nombre vives, " +
                        "u.apodo " +
                        "from  usuario u, "+
                        "ciudad c, "+
                        "pais p, "+
                        "vives_con v " +
                        "where c.id = u.id_ciudad "+
                        "and v.id = u.id_vives "+
                        "and p.id = u.id_pais "+
                        "and u.id_usuario=" + "'"+id+"';"
                ,null
        );

    }
    public Cursor ObtenerKamasutraIndex() {
        String[] columnas = new String[]{"id_kamasutra","nombre_postura","imagen"};
        Cursor cursor = db.query("kamasutra",columnas,null,null,null,null,null);

        return cursor;

    }
    public Cursor ObtenerKamasutraPostura(String id) {
        String[] columnas = new String[]{"id_kamasutra","nombre_postura","imagen","informacion","info_el","info_ella"};
        Cursor cursor = db.query("kamasutra",columnas,"id_kamasutra=?",new String[]{id},null,null,null);

        return cursor;
    }
    public int ObtenerNumPosturas() {
        Cursor cursor;

        cursor = db.rawQuery("select count(id_kamasutra)" +
                             "from   kamasutra;"
                , null
        );

        int id = 0;
        if (cursor.moveToFirst()) {
            cursor.moveToFirst();
            int num = cursor.getColumnIndex("count(id_kamasutra)");
            id = cursor.getInt(num);
        }
        return id;
    }
    public Cursor obtenerPostura(String id) {
        String[] columnas = new String[]{"nombre_postura","imagen"};
        Cursor cursor = db.query("kamasutra",columnas,"id_kamasutra=?",new String[]{id},null,null,null);

        return cursor;
    }
    public Cursor ObtenerKamasutraUsuario(int id_postura, int id_usuario){
        Cursor cursor;

            cursor = db.rawQuery("select te_gusta, " +
                                 "probado " +
                                 "from   kamasutra_usuario " +
                                 "where  id_kamasutra=" + id_postura +
                                 " and id_usuario=" + id_usuario + ";"
                    , null
            );


        return cursor;
    }
    public Cursor ObtenerCiudad_Pais_Vives(String texto){
        String[] columnas = new String[]{"id","nombre"};
        return db.query (texto,columnas,null,null,null,null,"nombre ASC");
    }

    public ContentValues generarCVModificarUsuario(int id, String nombre, String fecha, String sexo, int ciudad, int pais, int vives, String apodo){
        ContentValues valores = new ContentValues();
        valores.put("id_usuario", id);
        valores.put("nombre",nombre);
        valores.put("sexo", sexo);
        valores.put("fecha_nacimiento", fecha);
        valores.put("id_ciudad", ciudad);
        valores.put("id_pais",pais);
        valores.put("id_vives",vives);
        valores.put("apodo",apodo);

        return valores;
    }

    public ContentValues generarCVModificarUsurioUpdate0(String nombre, String fecha, String sexo, int ciudad, int pais, int vives, String apodo){
        ContentValues valores = new ContentValues();
        valores.put("nombre", nombre);
        valores.put("fecha_nacimiento", fecha);
        valores.put("sexo", sexo);
        valores.put("id_ciudad", ciudad);
        valores.put("id_pais", pais);
        valores.put("id_vives", vives);
        valores.put("apodo", apodo);

        return valores;
    }
    public ContentValues generarCVModificarUsurioUpdate(String nombre, String fecha, String sexo, String apodo){
        ContentValues valores = new ContentValues();
        valores.put("nombre", nombre);
        valores.put("fecha_nacimiento", fecha);
        valores.put("sexo", sexo);
        valores.put("apodo", apodo);

        return valores;
    }
    public ContentValues generarCVModificarNumPeticiones(int sugerencias){
        ContentValues valores = new ContentValues();
        valores.put("num_sugerencia",sugerencias);

        return valores;
    }
    public ContentValues generarCVInsertNumPeticiones(int id, int sugerencias){
        ContentValues valores = new ContentValues();
        valores.put("num_sugerencia",sugerencias);
        valores.put("id_usuario",id);

        return valores;
    }

    public void modificarUsuario0(String id, String nombre, String fecha, String sexo, int ciudad, int pais, int vives, String apodo){
        db.update("usuario",generarCVModificarUsurioUpdate0(nombre,fecha,sexo,ciudad,pais,vives,apodo),"id_usuario=?", new String[]{id});
    }
    public void modificarUsuario(String id, String nombre, String fecha, String sexo, int sugerencias, String apodo){
        db.update("usuario",generarCVModificarUsurioUpdate(nombre,fecha,sexo,apodo),"id_usuario=?", new String[]{id});

        Cursor cursor;
        cursor = db.rawQuery("select id_opcion " +
                             "from   opciones " +
                             "where id_usuario=" + id + ";"
                , null
        );
        if (cursor.moveToFirst()) {
            db.update("opciones",generarCVModificarNumPeticiones(sugerencias),"id_usuario=?", new String[]{id});
        }
        else{
            db.insert("opciones", null, generarCVInsertNumPeticiones(Integer.parseInt(id), sugerencias));
        }
    }

    public int obtenerIdPaisCiudadVives (String nombre, String tabla){
        Cursor c = db.query(tabla,new String[]{"id"},"nombre=?",new String[]{nombre},null,null,null);
        int id = 0;
        if (c.moveToFirst()) {
            c.moveToFirst();
            int numId = c.getColumnIndex("id");
            id = c.getInt(numId);
        }
        return id;
    }

    public ContentValues generarCVModificarEstadoUsuario(int estado){
        ContentValues valores = new ContentValues();
        valores.put("estado", estado);

        return valores;
    }

    public void cambiarEstadoUsuario (String id,int num){
        db.update("usuario",generarCVModificarEstadoUsuario(num),"id_usuario=?", new String[]{id});
    }
    public int consultarEstadoUsuario(String id){
        Cursor c = db.query("usuario",new String[]{"estado"},"id_usuario=?",new String[]{id},null,null,null);
        int estado = 0;
        if (c.moveToFirst()) {
            c.moveToFirst();
            int numEstado = c.getColumnIndex("estado");
            estado = c.getInt(numEstado);
        }
        return estado;
    }
    public String consultarApodo(String id){
        Cursor c = db.query("usuario",new String[]{"apodo"},"id_usuario=?",new String[]{id},null,null,null);
        String apodo = "";
        if (c.moveToFirst()) {
            c.moveToFirst();
            int numApodo = c.getColumnIndex("apodo");
            apodo = c.getString(numApodo);
        }
        return apodo;
    }
    public ContentValues generarCVModificarApodo(String apodo){
        ContentValues valores = new ContentValues();
        valores.put("apodo", apodo);

        return valores;
    }
    public void modificarApodo(String apodo, String id){
        db.update("usuario",generarCVModificarApodo(apodo),"id_usuario=?", new String[]{id});
    }
    public boolean hayUsuariosRegistrados(){
        Cursor c = db.rawQuery("select count(id_usuario) num from usuario;", null );
        if (c.moveToFirst()) {
            c.moveToFirst();
            int numNum = c.getColumnIndex("num");
            int num = c.getInt(numNum);

            if (num>0) { return true; }
            else { return false;  }
            }
        else                 { return false; }
    }
    public ContentValues generarContentValuesKamasutra(String id, String nombre, String imagen, String inf,String inf_el, String inf_ella){
        ContentValues valores = new ContentValues();
        valores.put("id_kamasutra",Integer.parseInt(id));
        valores.put("nombre_postura",nombre);
        valores.put("imagen", imagen);
        valores.put("informacion", inf);
        valores.put("info_el",inf_el);
        valores.put("info_ella",inf_ella);

        return valores;
    }

    public void LlenarBBDDconDatosKamasutra(JSONObject json) throws JSONException {
        int i=0;
        String pos;
        while (i<json.length()){
            pos = "a"+i;
            JSONObject objeto = (JSONObject) json.get(pos);
            String id = (String) objeto.get("id_kamasutra");
            String nombre = (String) objeto.get("nombre_postura");
            String imagen = (String) objeto.get("imagen");
            String inf = (String) objeto.get("informacion");
            String inf_el = (String) objeto.get("info_el");
            String inf_ella = (String) objeto.get("info_ella");
            db.insert("kamasutra", null, generarContentValuesKamasutra(id, nombre, imagen, inf, inf_el, inf_ella));
            i++;
        }
    }
    public String obtenerEmailPareja(String id){
        Cursor c = db.query("usuario_pareja",new String[]{"emailPareja"},"id_usuario=?",new String[]{id},null,null,null);
        String email = "";
        if (c.moveToFirst()) {
            c.moveToFirst();
            int numEmail = c.getColumnIndex("emailPareja");
            email = c.getString(numEmail);
        }
        return email;
    }
    public String obtenerEmail(String id){
        Cursor c = db.query("usuario",new String[]{"email"},"id_usuario=?",new String[]{id},null,null,null);
        String email = "";
        if (c.moveToFirst()) {
            c.moveToFirst();
            int numEmail = c.getColumnIndex("email");
            email = c.getString(numEmail);
        }
        return email;
    }

    public ContentValues generarContentValuesEmailPareja(String id,String correo){
        ContentValues valores = new ContentValues();
        valores.put("id_usuario", id);
        valores.put("emailPareja", correo);

        return valores;
    }
    public void grabarEmailPareja(String id,String correo){
        db.insert("usuario_pareja", null, generarContentValuesEmailPareja(id, correo));
    }
    public ContentValues generarCVInsertKamasutraUsuario(String id_usuario, int id_kamasutra, int probado, int te_gusta){
        ContentValues valores = new ContentValues();
        valores.put("id_usuario", id_usuario);
        valores.put("id_kamasutra", id_kamasutra);
        valores.put("probado", probado);
        valores.put("te_gusta", te_gusta);

        return valores;
    }
    public void modificarPosturaUsuario(String id_usuario, String id_postura, String probar, String gustar){
        Cursor cursor;
        cursor = db.rawQuery("select id " +
                             "from   kamasutra_usuario " +
                             "where  id_usuario=" + id_usuario + " " +
                                    "and id_kamasutra=" + id_postura +";"
                , null
        );
        if (cursor.moveToFirst()) {
           db.execSQL("update kamasutra_usuario " +
                      "set probado='"+ probar +"' , te_gusta='"+ gustar +"' "+
                      "where id_usuario='"+ id_usuario + "' "+
                             "and id_kamasutra='"+ id_postura +"';"
           );
        }
        else{
            db.insert("kamasutra_usuario",null,generarCVInsertKamasutraUsuario(id_usuario,Integer.parseInt(id_postura),Integer.parseInt(probar),Integer.parseInt(gustar)));
        }
    }
    public ContentValues generarCVBorrarApodo(){
        ContentValues valores = new ContentValues();
        valores.put("apodo", "");

        return valores;
    }
    public void borrarApodo(String id){
        db.update("usuario",generarCVBorrarApodo(),"id_usuario=?", new String[]{id});
    }

    //SUGERENCIAS///////////////////////////////////////////////////////////////////////////////////
    public ContentValues generarCVInsertSugerencia(int id_usuario, int fecha,int estado, int tipo, int id_postura, int id_sugerencia){
        ContentValues valores = new ContentValues();
        valores.put("id_usuario", id_usuario);
        valores.put("fecha_recibido", fecha);
        valores.put("estado_sugerencia", estado);
        valores.put("tipo", tipo);
        valores.put("id_postura", id_postura);
        valores.put("id_sug_server", id_sugerencia);

        return valores;
    }

    public void LlenarBBDDconDatosSugerencias(JSONObject json, String id_usuario) throws JSONException {
        int i=0;
        String pos;
        while (i<json.length()){
            pos = "s" + i;
            JSONObject objeto = (JSONObject) json.get(pos);
            String id_sugerencia = (String) objeto.get("id_sug_usuario");
            String id_kamasutra = (String) objeto.get("id_kamasutra");
            String fecha = (String) objeto.get("created_at");
            String fechaP =  fecha.substring(0,4).concat(fecha.substring(5,7).concat(fecha.substring(8,10)));
            db.insert("sugerencias",null,generarCVInsertSugerencia(Integer.parseInt(id_usuario),Integer.parseInt(fechaP),0,1,Integer.parseInt(id_kamasutra),Integer.parseInt(id_sugerencia)));
            i++;
        }
    }

    public boolean comprobarSugerencias(String id_usuario){
        Cursor c = db.rawQuery("select count(id_sugerencia) num " +
                               "from sugerencias " +
                               "where id_usuario='"+ id_usuario +"';"
                               , null );
        if (c.moveToFirst()) {
            c.moveToFirst();
            int numNum = c.getColumnIndex("num");
            int num = c.getInt(numNum);

            if (num>0) { return true; }
            else { return false;  }
        }
        else  { return false; }
    }
    public Cursor obtenerDatosSugerencias(int id_usuario){
        Cursor c = db.rawQuery("select s.fecha_recibido fecha, " +
                                      "s.estado_sugerencia estado, " +
                                      "s.tipo tipo, " +
                                      "s.id_postura id_postura, " +
                                      "k.nombre_postura nombre, " +
                                      "k.imagen imagen " +
                               "from   sugerencias s, " +
                                      "kamasutra k " +
                               "where  s.id_usuario='"+ id_usuario +"' " +
                                      "and s.id_postura = k.id_kamasutra;"

                               , null );
        return c;
    }
    public String obtenerSugerencia(String id_usuario, String id_postura){
        Cursor c = db.rawQuery("select id_sug_server " +
                               "from   sugerencias " +
                               "where  id_usuario='" + id_usuario + "' " +
                                       "and id_postura='" + id_postura +"';"
                //";"
                               , null );
        String id_sugerencia = "";
        if (c.moveToFirst()) {
            c.moveToFirst();
            int numSugerencia = c.getColumnIndex("id_sug_server");
            id_sugerencia = c.getString(numSugerencia);
        }
        return id_sugerencia;
    }
    public boolean borrarSugerencia(String sugerencia){
        String[] args = new String[]{sugerencia};
        db.execSQL("DELETE FROM sugerencias WHERE id_sug_server=?", args);
        return true;
    }

    //FORMULARIOS///////////////////////////////////////////////////////////////////////////////////
    public boolean comprobarFormularios(String id_usuario){
        Cursor c = db.rawQuery("select count(id_formulario) num " +
                               "from   formularios " +
                               "where  id_usuario='"+ id_usuario +"';"
                               , null );
        if (c.moveToFirst()) {
            c.moveToFirst();
            int numNum = c.getColumnIndex("num");
            int num = c.getInt(numNum);

            if (num>0) { return true; }
            else { return false;  }
        }
        else  { return false; }
    }
    public ContentValues generarCVInFormularios(int id_usuario, String titulo, int estado, int id_form_server, int fecha_recibido, int id_postura){
        ContentValues valores = new ContentValues();
        valores.put("id_usuario", id_usuario);
        valores.put("titulo", titulo);
        valores.put("estado", estado);
        valores.put("id_form_server", id_form_server);
        valores.put("fecha_recibido", fecha_recibido);
        valores.put("id_postura", id_postura);

        return valores;
    }
    public ContentValues generarCVInFormulariosPregunta(int id_formulario, int numero_pregunta, String texto, int tipo, String respuestas){
        ContentValues valores = new ContentValues();
        valores.put("id_formulario", id_formulario);
        valores.put("numero_pregunta", numero_pregunta);
        valores.put("texto", texto);
        valores.put("tipo", tipo);
        valores.put("respuestas", respuestas);

        return valores;
    }
    public void LlenarBBDDconDatosFormularios(JSONObject json, String id_usuario) throws JSONException {
        int i=0;
        int j;
        String pos;
        String pos2;
        int id_form = 0; //Lo necesito fuera para rellenar las preguntas
        while (i<json.length()){
            pos = "f" + i;
            JSONObject objeto = (JSONObject) json.get(pos);
            j=0;
            while (j<objeto.length()){
                pos2 = "p" +j;
                JSONObject pregunta = (JSONObject) objeto.get(pos2);
                boolean existe = false;
                if (j==0){ //Solo se obtiene la primera vez
                    String titulo = (String) pregunta.get("titulo");
                    String id_form_server = (String) pregunta.get("id_kamasutra");
                    String id_postura = (String) pregunta.get("id_kamasutra");
                    String fecha = (String) pregunta.get("created_at");
                    String fechaP = fecha.substring(0,4).concat(fecha.substring(5,7).concat(fecha.substring(8,10)));

                    existe = comprobarFormulario(id_form_server,id_usuario);

                    if (!existe) {
                        db.insert("formularios", null, generarCVInFormularios(Integer.parseInt(id_usuario), titulo, 0, Integer.parseInt(id_form_server), Integer.parseInt(fechaP), Integer.parseInt(id_postura)));

                        Cursor c = db.rawQuery("select id_formulario " +
                                "from   formularios " +
                                "where  id_usuario='" + id_usuario + "' " +
                                "and id_postura='" + id_postura + "';"
                                //";"
                                , null);

                        //Obtengo el id_formulario creado anteriormente con auto increment para insertarlo en la tabla preguntas
                        if (c.moveToFirst()) {
                            c.moveToFirst();
                            int numNum = c.getColumnIndex("id_formulario");
                            id_form = c.getInt(numNum);
                        }
                    }
                }
                if (!existe) {
                    String tituloPreg = (String) pregunta.get("pregunta");
                    String respuestas = (String) pregunta.get("respuestas");
                    String numeroPregunta = (String) pregunta.get("numero_pregunta");

                    db.insert("preguntas", null, generarCVInFormulariosPregunta(id_form, Integer.parseInt(numeroPregunta), tituloPreg, 0, respuestas));
                    j++;
                }
            }
            i++;
        }
    }
    public boolean comprobarFormulario(String id_usuario, String id_formulario_server){
        Cursor c = db.rawQuery("select id_formulario " +
                               "from   formularios " +
                               "where  id_form_server='"+ id_formulario_server +"' " +
                                       "and id_usuario='"+ id_usuario + "';"
                               , null );
        if (c.moveToFirst()) { return true;  }
        else                 { return false; }
    }
    public Cursor obtenerDatosFormularios(int id_usuario){
        Cursor c = db.rawQuery("select f.id_formulario id, " +
                                      "f.titulo titulo, " +
                                      "k.imagen imagen, " +
                                      "f.estado estado, " +
                                      "f.fecha_recibido fecha " +
                               "from   formularios f, " +
                                      "kamasutra k " +
                                      "where  f.id_usuario='"+ id_usuario +"' " +
                                      "and f.id_postura = k.id_kamasutra;"
                               ,null );
        return c;
    }
    public Cursor obtenerFormulario(int id_formulario){
        Cursor c = db.rawQuery ("select  f.titulo titulo, " +
                                        "f.id_form_server idFormServer, " +
                                        "p.numero_pregunta numPregunta, " +
                                        "p.texto pregunta, " +
                                        "p.respuestas respuestas " +
                                        "from   formularios f, " +
                                        "preguntas p " +
                                "where   f.id_formulario = p.id_formulario " +
                                        "and f.id_formulario='"+id_formulario+"' " +
                                        "order by p.numero_pregunta DESC;"
                               ,null);
        return c;
    }
    public boolean borrarFormulario(int id_formulario, String id_usuario){
        try{
            //String[] args = new String[]{Integer.toString(id_formulario),};
            //db.execSQL("DELETE FROM preguntas WHERE id_formulario=?", args);
            //db.execSQL("DELETE FROM formularios WHERE id_formulario=?", args);
            db.execSQL("delete "+
                       "from   preguntas " +
                       "where  id_formulario='"+ id_formulario +"';"
            );
            db.execSQL("delete "+
                       "from   formularios " +
                       "where  id_formulario='"+ id_formulario +"' " +
                               "and id_usuario='"+ id_usuario + "';"
            );
          return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }

    }
    public void borrar(){
        db.execSQL("delete from preguntas");
        db.execSQL("delete from formularios");

    }

}
